// 全局错误处理工具

/**
 * 处理API错误响应
 * @param error 错误对象
 */
export const handleApiError = (error: any): void => {
  try {
    // 尝试解析错误信息
    const errorData = typeof error.message === 'string' 
      ? JSON.parse(error.message) 
      : error;

    // 处理401未授权错误
    if (errorData.code === 401) {
      console.warn('检测到401错误，用户未授权或token已过期');
      
      // 清除本地存储
      localStorage.removeItem('accessToken');
      localStorage.removeItem('userInfo');
      
      // 如果当前不在登录页面，则重定向到登录页面
      if (window.location.pathname !== '/login') {
        window.location.href = '/login';
      }
      
      return;
    }

    // 处理其他错误
    console.error('API错误:', errorData);
  } catch (parseError) {
    // 如果无法解析错误信息，直接输出原始错误
    console.error('API错误:', error);
  }
};

/**
 * 检查响应是否为401错误
 * @param error 错误对象
 * @returns 是否为401错误
 */
export const isUnauthorizedError = (error: any): boolean => {
  try {
    const errorData = typeof error.message === 'string' 
      ? JSON.parse(error.message) 
      : error;
    return errorData.code === 401;
  } catch {
    return false;
  }
};

/**
 * 获取错误消息
 * @param error 错误对象
 * @returns 错误消息字符串
 */
export const getErrorMessage = (error: any): string => {
  try {
    const errorData = typeof error.message === 'string' 
      ? JSON.parse(error.message) 
      : error;
    return errorData.message || '未知错误';
  } catch {
    return error.message || '网络错误，请稍后重试';
  }
};